class Node:
    def __init__(self, pos_list, child, parent, Type, target_list):
        """
        Type 表示对该节点属性的判断：
                ***  正常空block或目标block： Type = 0
                ***  有小怪的block：          Type = damage

        transfer_co 表示小怪的h计算中的转化率：
                ***  100点血的damage 与多走 transfer_co 的代价相当

        cost : 代表最终对g的贡献
        """
        self.child = child
        self.parent = parent
        self.x = pos_list[0]
        self.y = pos_list[1]
        self.Type = Type
        self.transfer_co = 5
        self.cost = self.Type * self.transfer_co
        self.blood = 815
        self.g = 0
        self.target_list = target_list
        self.get_h()

    def get_h(self):  # 使用曼哈顿距离对h进行计算
        self.h = abs(self.x - self.target_list[0]) + abs(self.y - self.target_list[1])

    def get_f(self):
        self.f = self.g + self.h
        return self.f


def addnode(Xp, Xc):
    Xp.child.append(Xc)
    Xc.parent.append(Xp)
    return True


if __name__ == '__main__':
    headnode = Node(1, 2, [], [])
    print("x = ", headnode.x, ", y = ", headnode.y, ", parentnode = ", headnode.parent, ", childnode = ",
          headnode.child)
